<?php
/**
 * 后台商品管理控制器
 * 
 */

class GoodsController extends Controller{
	
	/**
	 * 在当前控制器实现用户访问的控制
	 */
	function filters(){
		return array(
				'accessControl',
		);
	}
	
	/**
	 * show add update del 等方法在进行访问的时候需要用户登录系统
	 * 为具体方法被访问设置条件
	 */
	
	function accessRules(){
		return array(
			//用户访问控制扩展
			//add 方法可以被无条件访问(无论登录与否都可以访问)	
			array(
				'allow',
				'actions'=>array('add'),
				'users'=>array('@'),
			),	
			array(
				'deny',
				'users'=>array('*'),
			),
				
			
			
		);
	}
	
	
	
	
	
	
	/**
	 * 商品展示
	 */
	function actionShow()
	{
		
		//通过模型model实例数据表信息查询
		//产生模型model对象
		$goods_model = Goods::model();
		
		//通过model模型对象调用相关方法帮我们查询数据
		//$goods_info = $goods_model -> find(); //第次只能查询一条信息
		//echo $goods_info->goods_name.'<br />'; //访问字段信息
		/*$goods_infos = $goods_model -> findAll();*/
		
		//分页设置
		//1.获得商品总的记录数目
		$cnt = $goods_model -> count();
		$per = 6;
		
		//2.实例化分页类对象
		$page = new Pagination($cnt, $per);
		
		//3.重新按照分页的样式拼装SQL语句进行查询
		$sql = "select * from {{goods}} $page->limit";
		$goods_infos = $goods_model -> findAllBySql($sql);
		
		//4.获得分页页面列表（需要传递到视图模板里边显示）
		$page_list = $page->fpage();
		
		
		
		//通过SQL语句获取信息
		//$sql = "select goods_name from {{goods}} limit 5 ";
		//$goods_infos = $goods_model-> findAllBySql($sql);
	
		/**
		foreach($goods_infos as $v){
			echo $v -> goods_name.'<br />';
			echo $v -> goods_price.'<br />';
			
		}
		*/
		/**
		 * 把获得的数据信息传递到视图模板中
		 * renderPartial('视图名字', '传递变量的信息');
		 * renderPartial('show', arrya('名字' => 值, '名字' = 值));
		 * 名字：是视图模板中使用的变量名字
		 * 值：当前需要传递的变量的值
		 * 
		 */
		
	
		
		
		
		
		//var_dump($goods_infos);
		
		
		$this->renderPartial('show', array('goods_info'=>$goods_infos,'page_list'=>$page_list));
	}
	
	/**
	 * 添加商品
	 */
	function actionAdd()
	{
		$goods_model = new Goods();
		
		//判断表单是否有提交过来的数据
		//$_POST['GOODS']其中Goods有个好处，可以在当前控制器接收多个表单信息，只要下标有区分就可以
		if(isset($_POST['Goods'])){
			//我们要把从表单提交过来的数据赋予$goods_model模型里边
			/*
			$goods_model -> goods_name = $_POST['Goods']['goods_name'];
			$goods_model -> goods_category_id = $_POST['Goods']['goods_category_id'];
			$goods_model -> goods_brand_id = $_POST['Goods']['goods_brand_id'];
			$goods_model -> goods_price = $_POST['Goods']['goods_price'];
			$goods_model -> goods_introduce = $_POST['Goods']['goods_introduce'];
			$goods_model -> goods_number = $_POST['Goods']['number'];
			$goods_model -> goods_weight = $_POST['Goods']['weight'];
			*/
			//利用foreach 对上面代码进行优化
			foreach($_POST['Goods'] as $_k => $_v)
			{
				$goods_model -> $_k = $_v;
			}
			
			$goods_model -> goods_create_time = time();
			
			if($goods_model -> save())
			{
				//信息添加成功后实现页面重定向(商品列表页)
				$this -> redirect('./index.php?r=houtai/goods/show');
			}
		}
		
		if(is_set)
		
		$this->renderPartial('add', array('goods_model' => $goods_model));
	}
	
	/**
	 * 修改商品
	 */
	function actionUpdate($id)
	{
		//我们具体修改哪个商品，需要将其信息查询出来
		//我们需要知道哪个商品被修改，把商品的ID信息通过GET方式传递过来
		//接收被 修改商品ID信息
		
		//根据$id查询被修改商品信息
		$goods_model = Goods::model(); //除了添加(new Goods)数据我们都使用Goods::model()来实例化模型对象
		$goods_info = $goods_model -> findByPk($id);
		
		//$goods_info是我们查询出来的被 修改商品的信息，同时也是数据模型对象
		//把$goods_info传递到视图模板里边
		
		//$goods_info数据模型里边有一些旧的信息，新的信息覆盖旧的信息
		//重定向函数 记： redi+rect  redirect
		
		if(isset($_POST['Goods'])){
			foreach($_POST['Goods'] as $_k => $_v){
				$goods_info -> $_k = $_v;
			}
			if($goods_info -> save())
				$this -> redirect('./index.php?r=houtai/goods/show');
		}
		
		
		
		
		
		
		$this->renderPartial('update', array('goods_model' => $goods_info));
	}

	/**
	 * 删除指定ID商品信息
	 * 删除商品信息与修改类似，通过GET方式传递被删除商品信息ID
	 */
	function actionDel($id)
	{
		//根据ID将被删除商品的数据模型对象获得到，通过该对象调用delete方法既可删除数据
		$goods_model = Goods::model(); //获得数据模型
		$goods_info = $goods_model -> findByPk($id); //获得被删除商品的模型对象
		
		if($goods_info -> delete())
			$this->redirect('./index.php?r=houtai/goods/show');
	}
	
	
	/**
	 * 测试添加功能
	 * 
	 */
	
	function actionJia(){
		//1.创建模型对象出来
		$goods_model = new Goods(); //我们需要添加数据，创建对象有另查询
		//2. 为对象丰富属性 goods_name,goods_price,goods_weight, 等等
		$goods_model -> goods_name = '苹果6puls';
		$goods_model -> goods_price = 10000;
		$goods_model -> goods_weight = 20;
		
		//3.调用 save()方法实现数据添加
		
		if($goods_model -> save())
			echo '添加成功';
		else
			echo '添加失败';
		
	}
	
	
	


}

